package br.fafica.poo2.rightcode.filtro;

import java.util.ArrayList;

import br.fafica.poo2.rightcode.Aplicacao;
import br.fafica.poo2.rightcode.exception.FiltroNaoEncontradoException;
import br.fafica.poo2.rightcode.usuario.Usuario;

public class RepositorioFiltroArrayList implements IRepositorioFiltro{
	
	private ArrayList <Filtro> filtros;
	private static int increment;
	
	public RepositorioFiltroArrayList(){
		filtros = new ArrayList <Filtro>();
		increment = (getCodigoIncrement()+1);
		System.err.println("CONTRUTOR DE ARRAYLIST FILTRO");
	}
	
	private int getCodigoIncrement(){
		return filtros.size();
	}

	@Override
	public void TesteFiltro() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void InstalarFiltro(boolean samples) {
		if(samples){
			Aplicacao app = new Aplicacao();
			for(Filtro f: app.getFiltro()){
				AdicionarFiltro(f);
			}
		}
		
	}

	@Override
	public void AdicionarFiltro(Filtro filtro) {
		if(filtro.getCodigo()==0){
			filtro.setCodigo(increment);
			increment+=1;
		}
		filtros.add(filtro);
		
	}

	@Override
	public ArrayList<Filtro> ListaFiltro() {
		return filtros;
	}

	@Override
	public void RemoverFiltro(Filtro filtro) {
		filtros.remove(filtro);
		
	}

	@Override
	public Filtro BuscarFiltro(int codigo) {
		Filtro busca = null;
		for(int i = 0; i < filtros.size();i++){
			if(codigo==filtros.get(i).getCodigo()){
				busca=filtros.get(i);
				break;
			}
		}
		return busca;
	}

	@Override
	public void EditarFiltro(Filtro filtro) throws FiltroNaoEncontradoException {
		Filtro novo = BuscarFiltro(filtro.getCodigo());
		if(novo != null){
			novo.setNome(filtro.getNome());
			novo.setDescricao(filtro.getDescricao());
		}else{
			throw new FiltroNaoEncontradoException();
		}
	}

	
	
}
